Box::leak: tell people to avoid unleaking - #160323
Conversation
|
Do you think the lint should match against both |
|
Yes I think that would be good. |
|
Would it be useful to clarify under what conditions unleaking is acceptable? I can't think of any phrasing around allocators that doesn't sound overly long and confusing personally but maybe there is something. otherwise, lgtm |
|
I think it would have to be something like
Up to you if you want to document that, IMO we are better off telling people not to do this even if it is sometimes technically allowed. |
|
I like the new wording, we can let people dig into docs if they want to do more. ty ^^ @bors r+ rollup |
|
Hey, I have just opened rust-lang/rust-clippy#17485 :) |
Box::leak: tell people to avoid unleaking r? @nia-e Cc @rust-lang/opsem Note that this goes against the advice given by clippy in rust-lang/rust-clippy#17336. I think clippy should be adjusted to recommend `Box::into_non_null` instead. @ArhanChaudhary wold be great if you could make a clippy PR for that. :)
…uwer Rollup of 10 pull requests Successful merges: - #157572 (stabilize size_of_val_raw, align_of_val_raw, Layout::for_value_raw) - #160012 (miri: ensure validity of references and pointers we dereference and cast) - #160294 (Update Enzyme to resolve one of the open bugs) - #159503 (allocations: document that they can be read-only) - #160250 (When issuing suggestions for missing trait items, label unstable items) - #160251 (Replace unsafe usage of `NonNull::new_unchecked` with `Box::into_non_null`) - #160311 (Remove final use of sealed traits from stdlib) - #160313 (Make the noundef-on-Cast size guard explicit) - #160323 (Box::leak: tell people to avoid unleaking) - #160328 (Move `check_track_caller` into the attribute parser)
…uwer Rollup of 12 pull requests Successful merges: - #157572 (stabilize size_of_val_raw, align_of_val_raw, Layout::for_value_raw) - #160012 (miri: ensure validity of references and pointers we dereference and cast) - #160294 (Update Enzyme to resolve one of the open bugs) - #159503 (allocations: document that they can be read-only) - #160179 (std: Update `wasip3` crate dependency) - #160250 (When issuing suggestions for missing trait items, label unstable items) - #160251 (Replace unsafe usage of `NonNull::new_unchecked` with `Box::into_non_null`) - #160311 (Remove final use of sealed traits from stdlib) - #160313 (Make the noundef-on-Cast size guard explicit) - #160323 (Box::leak: tell people to avoid unleaking) - #160328 (Move `check_track_caller` into the attribute parser) - #160333 (Remove itertools dependency from `rustc_ast_pretty`)
…uwer Rollup of 12 pull requests Successful merges: - rust-lang/rust#157572 (stabilize size_of_val_raw, align_of_val_raw, Layout::for_value_raw) - rust-lang/rust#160012 (miri: ensure validity of references and pointers we dereference and cast) - rust-lang/rust#160294 (Update Enzyme to resolve one of the open bugs) - rust-lang/rust#159503 (allocations: document that they can be read-only) - rust-lang/rust#160179 (std: Update `wasip3` crate dependency) - rust-lang/rust#160250 (When issuing suggestions for missing trait items, label unstable items) - rust-lang/rust#160251 (Replace unsafe usage of `NonNull::new_unchecked` with `Box::into_non_null`) - rust-lang/rust#160311 (Remove final use of sealed traits from stdlib) - rust-lang/rust#160313 (Make the noundef-on-Cast size guard explicit) - rust-lang/rust#160323 (Box::leak: tell people to avoid unleaking) - rust-lang/rust#160328 (Move `check_track_caller` into the attribute parser) - rust-lang/rust#160333 (Remove itertools dependency from `rustc_ast_pretty`)
…uwer Rollup of 12 pull requests Successful merges: - rust-lang/rust#157572 (stabilize size_of_val_raw, align_of_val_raw, Layout::for_value_raw) - rust-lang/rust#160012 (miri: ensure validity of references and pointers we dereference and cast) - rust-lang/rust#160294 (Update Enzyme to resolve one of the open bugs) - rust-lang/rust#159503 (allocations: document that they can be read-only) - rust-lang/rust#160179 (std: Update `wasip3` crate dependency) - rust-lang/rust#160250 (When issuing suggestions for missing trait items, label unstable items) - rust-lang/rust#160251 (Replace unsafe usage of `NonNull::new_unchecked` with `Box::into_non_null`) - rust-lang/rust#160311 (Remove final use of sealed traits from stdlib) - rust-lang/rust#160313 (Make the noundef-on-Cast size guard explicit) - rust-lang/rust#160323 (Box::leak: tell people to avoid unleaking) - rust-lang/rust#160328 (Move `check_track_caller` into the attribute parser) - rust-lang/rust#160333 (Remove itertools dependency from `rustc_ast_pretty`)
Those conditions seem very easy to fulfill. What are the "many seemingly harmless ways of doing it (that) are undefined behavior"? |
r? @nia-e
Cc @rust-lang/opsem
Note that this goes against the advice given by clippy in rust-lang/rust-clippy#17336. I think clippy should be adjusted to recommend
Box::into_non_nullinstead. @ArhanChaudhary wold be great if you could make a clippy PR for that. :)